﻿<%@ Page Title="" Language="C#" MasterPageFile="~/Master/Site.master" AutoEventWireup="true" CodeFile="Frm_RadioEnlace.aspx.cs" Inherits="Views_Predeterminados_Frm_RadioEnlace" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
<div id="pn_inputs" class="well">
    <div id="contenido" class="row-fluid">
        
        <div class="span6">
            <fieldset>
                <div class="form-horizontal">
                    <div class="control-group">
                        <label class="control-label" for="txtCantidadSaltos">Cantidad de Saltos </label>
                        <div class="controls">
                            <input id="txtCantidadSaltos" placeholder="Cantidad de Saltos" name="Cantidad de Saltos" type="number" value="" min="1" max="100000" step="1"  validationMessage="Cantidad de Saltos es requerido!" required/>
                        </div>
                    </div>	
                </div>
            </fieldset> 
        </div>
        <div class="span6">
            <fieldset>
                <div class="form-horizontal">
                    <div class="control-group">
                        <label class="control-label" for="txtCapacidad">Capacidad (Mb)</label>
                        <div class="controls">
                            <input id="txtCapacidad"  placeholder="Capacidad" name="Capacidad" type="number" value="" min="1" max="100000" step="1"  validationMessage="Capacidad es requerido!" required />
                        </div>
                    </div>	
                </div>
            </fieldset> 
        </div>
        
        </div>	
        <div class="center">
            <button id="btnCalcular" class="btn">Calcular</button>
        </div>
    </div>
    <div id="gridRadioenlace"></div>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ScriptContent" Runat="Server">

<script type="text/javascript">
    var Ids = [{ Id: 197, Orden: 0, Grupo: 1 }, { Id: 201, Orden: 1, Grupo: 1 }, { Id: 200, Orden: 2, Grupo: 1 }, { Id: 58, Orden: 3, Grupo: 1 }, { Id: 97, Orden: 4, Grupo: 1 },
        { Id: 102, Orden: 5, Grupo: 1 }, { Id: 104, Orden: 6, Grupo: 1 }, { Id: 152, Orden: 7, Grupo: 1 }, { Id: 224, Orden: 8, Grupo: 1 }, { Id: 285, Orden: 9, Grupo: 1 }, { Id: 287, Orden: 10, Grupo: 1 },
        { Id: 288, Orden: 11, Grupo: 1 }, { Id: 231, Orden: 12, Grupo: 1 }, { Id: 234, Orden: 13, Grupo: 1 }, { Id: 235, Orden: 14, Grupo: 1 }, { Id: 238, Orden: 15, Grupo: 1}]
    $(document).ready(function () {
        $("#txtCantidadSaltos").kendoNumericTextBox({
            format: "#"
        });
        $("#txtCapacidad").kendoNumericTextBox({
            format: "#"
        });
        $("#btnCalcular").on("click", function () {
            var validator = $("#pn_inputs").kendoValidator().data("kendoValidator");
            if (validator.validate()) {
                loadRadioEnlace();
            }
            return false;
        });
    });
    function loadRadioEnlace(e) {
        //var listaIds = calcularIds();
        var grid = $("#gridRadioenlace").kendoGrid({
            dataSource: {
                //batch: true,
                type: "json",
                transport: {
                    read: {
                        type: "POST",
                        url: "Frm_RadioEnlace.aspx/ObtenerItemsPorIds",
                        contentType: "application/json; charset=utf-8",
                        dataType: "json"
                    },
                    create:{
                        type: "POST",
                        url: function (options) {
                            return "";
                        },
                        contentType: "application/json; charset=utf-8",
                        dataType: "json"
                    },
                    parameterMap: function (options, operation) {
                        if (operation == "read") {
                            return kendo.stringify({ idsItems: Ids });
                        }
                        if (operation == "create") {
                            var datos = $("#gridRadioenlace").data("kendoGrid");
                            var itemDS = datos.dataSource.getByUid(options.uiId)
                            itemDS.PrecioTotalMinimo = itemDS.Cantidad * itemDS.PrecioUnitarioMinimo;
                            itemDS.PrecioTotalMaximo = itemDS.Cantidad * itemDS.PrecioUnitarioMaximo;
                            itemDS.P07ClaseDesc = "0Otros";
                            datos.dataSource.fetch();
                        }
                    }
                },
                schema: {
                    data: function (response) {
                        if (response.d.length > 0) {
                            var rpta = response.d;
                            rpta = calcularRadioEnlace(rpta);
                            return rpta;
                        }
                    },
                    model: {
                        id: "IdComponente",
                        fields: {
                            IdComponente: { type: "number", editable: false },
                            Descripcion: { type: "string", validation: { required: { message: "Ingrese Descrición"}} },
                            Cantidad: { type: "number", validation: { required: { message: "Ingrese Cantidad" }, min: 1, max: 10000} },
                            Orden: { type: "number" },
                            PrecioUnitarioMinimo: { type: "number", validation: { required: { message: "Ingrese Precio Unitario Mínimo" }, min: 1, max: 10000} },
                            PrecioUnitarioMaximo: { type: "number", validation: { required: { message: "Ingrese Precio Unitario Máximo" }, min: 1, max: 10000} },
                            PrecioTotalMinimo: { type: "number", editable: false },
                            PrecioTotalMaximo: { type: "number", editable: false },
                            FecCre: { type: "date", defaultValue: new Date() },
                            UsuCre: { type: "date", defaultValue: new Date() },
                            P07ClaseDesc: { type: "string" },
                            uiId: { type: "string" }
                        }
                    }
            },
            group: {
                field: "P07ClaseDesc"
                        , aggregates: [
                            { field: "PrecioTotalMinimo", aggregate: "sum" },
                            { field: "PrecioTotalMaximo", aggregate: "sum" }
                        ]
                        , dir: "asc"
            },
            sort: { field: "Orden", dir: "asc" },
            aggregate: [{ field: "PrecioTotalMinimo", aggregate: "sum" },
                                    { field: "PrecioTotalMaximo", aggregate: "sum"}]
        },
        toolbar: [
                { name: "create", text: "Nuevo" },
                { name: "save", text: "Guardar" },
                { name: "cancel", text: "Cancelar   " },
                //{ template: '<a class="k-button" href="\\#" onclick="return NuevoFila()">Nuevo</a>' },
                {template: '<a class="k-button" href="\\#" onclick="return ExportExcel()">Excel</a>' }
                 //,{ template: '<label style="display: initial;margin-left:5px;" id="lbRatio">ds</label>' }
               ],
        scrollable: true,
        sortable: false,
        filterable: false,
        editable: "inline",
        //dataBound: onDataBound,
        columns: [
            { field: "IdComponente", title: "ID", width: "40px" },
            { field: "Descripcion", title: "Descripción", width: "200px" },
            { field: "P07Clase", width: "90px", hidden: true, groupHeaderTemplate: "#= value #" },
            { field: "P07ClaseDesc", width: "90px", hidden: true, groupHeaderTemplate: "#= getValueShow(data) #" },
            { field: "Cantidad", title: "Cantidad", width: "50px" },
            {field: "PrecioUnitarioMinimo", title: "Precio Unitario Mínimo", width: "80px", format: "{0:c}" },
            { field: "PrecioUnitarioMaximo", title: "Precio Unitario Máximo", width: "80px", format: "{0:c}" },
            { field: "PrecioTotalMinimo", title: "Precio Total Mínimo", format: "{0:c}", aggregates: ["sum"],
                groupFooterTemplate: "SubTotal: #=kendo.toString(sum, '0.00')#", footerTemplate: "TOTAL: #=kendo.toString(sum, '0.00')#", width: "80px"
            },
            { field: "PrecioTotalMaximo", title: "Precio Total Máximo", format: "{0:c}", aggregates: ["sum"],
                groupFooterTemplate: "SubTotal: $#=kendo.toString(sum, '0.00')#", footerTemplate: "TOTAL: $#=kendo.toString(sum, '0.00')#", width: "80px"
            }
        ],
        saveChanges: function (e) {
            //this.refresh();
        },
        change: function (e) {
            //this.refresh();
        },
        edit: onEdit
        //,save: onSave
    }).data("kendoGrid");
    }
    function onEdit(e) {
        e.model.uiId = e.model.uid;
    }
    function NuevoFila() {
        var datos = $("#gridRadioenlace").data("kendoGrid");
    }
    function ExportExcel() {
        //console.log("Toolbar command is clicked!");
        var datos = $("#gridRadioenlace").data("kendoGrid");
        $.ajax({
            type: "POST",
            url: "Frm_RadioEnlace.aspx/DatosAExcel",
            data: kendo.stringify({ datos: datos.dataSource.data() }),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                if (data.d == "null")
                    return;
                if (data.d) {
                    var datos = data.d;
                    alert("Se Generó Excel Correctamente.");
                }
            },
            error: function (data) {
                alert("Ocurrió un Error al Generar Excel.");
            }
        });
        return false;
    }
    function getValueShow(data) {
        if (data.value) {
            return data.value.substring(1, data.value.length);
        } else {
            return "Otros";
        }
    }
    function calcularRadioEnlace(lista) {
        $.each(lista, function (index, value) {
            switch (value.P07Clase.toString()) {
                case "27":
                    value.P07ClaseDesc = "1" + value.P07ClaseDesc;
                    break;
                case "70":
                    value.P07ClaseDesc = "2" + value.P07ClaseDesc;
                    break;
                case "71":
                    value.P07ClaseDesc = "3" + value.P07ClaseDesc;
                    break;
                case "26":
                    value.P07ClaseDesc = "4" + value.P07ClaseDesc;
                    break;
                case "28":
                    value.P07ClaseDesc = "5" + value.P07ClaseDesc;
                    break;
                case "29":
                    value.P07ClaseDesc = "6" + value.P07ClaseDesc;
                    break;
            }
            value.FecCre = new Date();
            value.FecMod = new Date();
        });
        
        var paramRC, paramIDU, paramT,paramPOE;
        var CS = parseInt($("#txtCantidadSaltos").val());
        var Cap = parseInt($("#txtCapacidad").val());
        paramT = parseInt(CS) + 1;
        $.each(lista, function (index, value) {
            value.Cantidad = paramT;
            if (value.IdComponente == 197) {
                value.Cantidad = 2 * CS * Math.ceil(Cap / 250);
                paramRC = value.Cantidad;
            }
            if (value.IdComponente == 97) {
                value.Cantidad = paramT;
            }
            if (value.IdComponente == 201) {
                if ((paramT / 5) / paramT > paramT) {
                    value.Cantidad = Math.round(((paramT / 5) / paramT) * paramT);
                } else {
                    value.Cantidad = paramT;
                }
                paramIDU = value.Cantidad;
            }
            if (value.IdComponente == 200) {
                value.Cantidad = paramRC + paramIDU;
                paramPOE = value.Cantidad;
            }
            if (value.IdComponente == 58) {
                value.Cantidad = paramPOE;
            }
            value.PrecioTotalMinimo = value.Cantidad * value.PrecioUnitarioMinimo;
            value.PrecioTotalMaximo = value.Cantidad * value.PrecioUnitarioMaximo;
        });
        return lista;
    }

    function onDataBound(e) {
    }
</script>
</asp:Content>

